package longtd.app.game;

import android.graphics.Canvas;

public class GameLoopThread extends Thread {
	private GameView view;
	private boolean running = false;
	
	
	static final long FPS = 10;
	
	public GameLoopThread(GameView view){
		this.view = view;
	}
	
	public void setRunning(boolean run){
		running = run;
	}
	
	@Override
	public void run(){
		
		long ticksPS = 1000 / FPS;
		long startTime;
		long sleepTime;
		
		while(running){
			Canvas c = null;
			startTime = System.currentTimeMillis();
			try {
				// when you drawing canvas, no other can draw
				c = view.getHolder().lockCanvas();
				synchronized (view.getHolder()) {
					view.onDraw(c);	
				}
				// when finish draw, unlock canvas;	
			} finally {
				if (c!= null ){
					view.getHolder().unlockCanvasAndPost(c);
				}
			}
			
			sleepTime = ticksPS - (System.currentTimeMillis() - startTime);
			try {
				if (sleepTime > 0){
					sleep(sleepTime);	
				}else{
					sleep(10);
				}
			} catch (Exception e){}
			
		}
	}
	
}
